package optional_demo;
import java.util.Optional;
/**
 * @author ChenYongHao
 * @date 2023/5/4 9:55
 * @desc 、常用方法
 */

public class OptionalDemo {
    public static void main(String[] args) {
        // 创建一个 Optional 实例
        Optional<String> op1 = Optional.of("Hello,World");

        // 创建一个空的 Optional 实例
        Optional<Object> op2 = Optional.empty();

        // 若参数不为 null，创建 Optional 实例，否则创建空实例
        Optional<Object> op3 = Optional.ofNullable(null);

        // 判断是否包含值
        boolean isPresent = op1.isPresent();
        System.out.println(isPresent);

        // 如果调用对象包含值，返回该值，否则返回参数
        Object orElse = op2.orElse("Hello,World");
        System.out.println(orElse);

        // 如果调用对象包含值，返回该值，否则返回 s 获取的值
        Object orElseGet = op3.orElseGet(() -> 10 + 20);
        System.out.println(orElseGet);

        // 如果有值对其处理，并返回处理后的Optional，否则返回 Optional.empty()
        Optional<String> op4 = op1.map((s) -> s.toUpperCase());
        System.out.println(op4.get());
    }
}
